package de.koller.oceanFramework.tree;

import de.koller.oceanFramework.gl.IOceanGame;

/**
 * 
 * @author Fabian Koller
 */
public interface ISea3 {

	/**
	 * 
	 */
	public void initalize();
	/**
	 * 
	 * @param elapsedTime
	 */
	public void updating( int elapsedTime );
	/**
	 * 
	 * @param elapsedTime
	 */
	public void rendering( int elapsedTime );
	/**
	 * 
	 */
	public void releasing();
	
	/**
	 * 
	 * @param index
	 * @return
	 */
	public ISea3 getChild( int index );
	/**
	 * 
	 * @param child
	 * @return
	 */
	public int getChild( ISea3 child );
	/**
	 * 
	 * @return
	 */
	public int childNumber();
	/**
	 * 
	 * @param index
	 */
	public void removeChild( int index );
	/**
	 * 
	 * @param child
	 */
	public void removeChild( ISea3 child );
	/**
	 * 
	 * @param child
	 */
	public void addChild( ISea3 child );
	
	/**
	 * 
	 * @return
	 */
	public ISea3 getMother();
	/**
	 * 
	 * @param mother
	 */
	public void setMother( ISea3 mother );
	/**
	 * 
	 * @param mother
	 * @return
	 */
	@Deprecated
	public ISea3 searchMother( Class<? extends ISea3> mother );
	
	/**
	 * 
	 * @return
	 */
	public IOceanGame getGame();
	/**
	 * 
	 * @param game
	 */
	public void setGame( IOceanGame game );
	
	public int countChilds();
	
}
